package cn.superfw.crypto.gmsm.sm3;

import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.util.encoders.Hex;

import java.nio.charset.StandardCharsets;
import java.util.Locale;

/**
 * 国密SM3摘要算法
 */
public class SM3 {

    public static String digest(String input) {

        // 创建摘要器
        SM3Digest sm3Digest = new SM3Digest();

        // 解析输入数据
        byte[] bytes = input.getBytes(StandardCharsets.UTF_8);

        // 构造输出数据缓冲区
        byte[] out = new byte[32];

        // 设置待摘要字节数据
        sm3Digest.update(bytes, 0, bytes.length);

        // 执行摘要
        sm3Digest.doFinal(out, 0);

        // 返回HEX字符串
        return Hex.toHexString(out).toUpperCase(Locale.ROOT);

    }

}
